Repository navigation
feat: add a minimal runtime image - #187
Open
baszalmstra wants to merge 5 commits into
Open
baszalmstra wants to merge 5 commits into
baszalmstra wants to merge 5 commits into
Conversation
pavelzw
reviewed
Sep 9, 2026
Comment on lines
+6
to
+16
| paths: | ||
| - Dockerfile.runtime | ||
| - .github/workflows/runtime.yml | ||
| - example/** | ||
| - tests/runtime.py | ||
| pull_request: | ||
| paths: | ||
| - Dockerfile.runtime | ||
| - .github/workflows/runtime.yml | ||
| - example/** | ||
| - tests/runtime.py |
Collaborator
There was a problem hiding this comment.
Suggested change
| paths: | |
| - Dockerfile.runtime | |
| - .github/workflows/runtime.yml | |
| - example/** | |
| - tests/runtime.py | |
| pull_request: | |
| paths: | |
| - Dockerfile.runtime | |
| - .github/workflows/runtime.yml | |
| - example/** | |
| - tests/runtime.py | |
| pull_request: |
| @@ -0,0 +1,51 @@ | |||
| FROM cgr.dev/chainguard/wolfi-base@sha256:918a593b8268c222afd4e2c4f06860ac984e60719b4697e4c71d796bc8fcd042 AS source | |||
Collaborator
There was a problem hiding this comment.
do they also have tags that dependabot can update next to the digest? this currently is hard to understand from which version it's coming from
Comment on lines
+4
to
+6
| bash=5.3-r13 \ | ||
| ncurses=6.6.20260905-r0 \ | ||
| ncurses-terminfo-base=6.6.20260905-r0 |
Collaborator
There was a problem hiding this comment.
how are we planning on updating those?
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The shell-hook example uses Ubuntu for the final stage even though it only needs to run an already-installed environment. This adds
ghcr.io/prefix-dev/conda-runtime:glibc-bash, ascratchimage with glibc, Bash, and their runtime libraries, without Pixi or a package manager.I used selected files from a digest-pinned Wolfi image rather than complete APK packages to keep the base small. Local uncompressed sizes are 7.77 MB on amd64 and 7.17 MB on arm64, compared with 78.16 MB for Ubuntu 24.04 on amd64. The image retains upstream component SBOMs, source-path/package mappings, and checksums of the extracted files. These are source-package SBOMs, not an inventory of complete installed APKs or the application's conda environment.
The README and example use the new image. A separate workflow tests both architectures on native runners, exports the tested images, and publishes them as
glibc-bashandglibc-bash-<full-git-commit>on main, independently of Pixi releases. Branch-scoped concurrency prevents older runs from overwriting the floating tag. The image has no/bin/sh, coreutils, terminfo, or system CA bundle; the README explains when to include dependencies in the environment or keep using Ubuntu/Debian.libgcc_sis not included in the base. Applications that need it for glibc thread cancellation orpthread_exitmust obtain a discoverable copy from their environment.Image naming
The runtime goes to a separate
conda-runtimepackage rather than aruntimetag on thepixipackage, because this image contains no Pixi and runs any copied conda environment, whatever installed it. Theglibc-bashtag names the runtime components it provides, so the name does not commit us to Wolfi as the source distribution.The new GHCR package needs public visibility after its first publication.
Both final stages stay supported, so the README has a "Choosing a final base image" table comparing
conda-runtimeandubuntu:24.04on size, attack surface, in-container debugging, CA bundles, and base updates. Short version:conda-runtimefor small production images where the environment carries everything, Ubuntu or Debian when you want a shell and system packages for debugging or for tooling that expects a distribution layout.Testing
linux/amd64andlinux/arm64locally; ARM64 ran under Docker Desktop emulation.pthread_exitusing the environment'slibgcc_s, and file/SBOM provenance with a read-only root filesystem as UID/GID 65532.pixi exec --spec actionlint --spec shellcheck actionlint .github/workflows/runtime.yml.GHCR publication has not been exercised. The separate Pixi deployment guide's Ubuntu example remains valid and is unchanged.